#include "Comm.hpp"
#include "Log.hpp"

// 充当使用共享内存的角色
int main()
{
    int fd = Open(FIFO_FILE, WRITER);
    cout << "Client: " << fd << endl;
    // 创建相同的key值
    key_t key = CreateKey();
    Log() << "key: " << key << endl;

    // 等待Server端先创建共享内存
    sleep(1);
    
    // 获取共享内存
    int shmid = shmget(key, MEM_SIZE, IPC_CREAT);
    if (shmid < 0)
    {
        Log() << "IpcShmCli shmget: " << strerror(errno) << endl;
        return 2;
    }

    // 挂接
    char* str = (char*)shmat(shmid, nullptr, 0);

    // sleep(5);
    // 用它

    // 用共享内存，竟然没有使用任何系统调用接口
    // 直接向str空间写入
    while (true)
    {
        printf("Please Enter# ");
        fflush(stdout);
        // 往共享内存写数据

        ssize_t s = read(0, str, MEM_SIZE);
        if (s > 0)
        {
            str[s] = '\0';
        }
        Signal(fd);
    }

    // int cnt = 0;
    // while (cnt < 26)
    // {
    //     str[cnt] = 'A' + cnt;
    //     cnt++;
    //     str[cnt] = '\0';
    //     sleep(1);
    // }

    // 去关联
    shmdt(str);
    
    // 不需要删除
    return 0;
}
